import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int x;
        while(true) {
            System.out.println("请输入1、2、3");
            System.out.println("1、打印Hello world！\n2、输入数组，求最大子数组和\n3、输出1~20000内的所有素数");
            x = scanner.nextInt();
            switch (x) {
                case 1:
                    print();
                    break;
                case 2:
                    shuzu();
                    break;
                case 3:
                    sushu();
                    break;
            }
        }
    }

    private static void print() {
        System.out.println("Hello world!");
    }
    private static void shuzu() {
                Scanner scanner = new Scanner(System.in);
                System.out.println("请输入数组长度：");
                int n = scanner.nextInt();
                int[] array = new int[n];
                System.out.println("请输入数组元素：");
                for(int i = 0; i < n; i++){
                    array[i] = scanner.nextInt();
                }
                // sum为当前子数组的和
                int sum = 0;
                // max为子数组的最大和
                int max = 0;
                // 最大子数组的起始位置
                int startPos = 0;
                // 最大子数组的结束位置
                int endPos = 0;

                for (int i = 0; i < array.length; i++) {
                    sum += array[i];// 求和
                    if (sum < 0) {// 如果当前求得总和为负数的话，就将其清零，并且开始位置从下一个位置开始
                        sum = 0;
                        startPos = i + 1;
                    }
                    if (sum > max) {// 如果求得总和大于之前的最大值的话，就将sum赋值给max，同时记录最后的位置
                        max = sum;
                        endPos = i + 1;
                    }
                }

                System.out.println("Max:" + max);
                System.out.println("startPos:" + startPos + ",endPos:" + (endPos - 1));
    }
    private static void sushu() {
        //输出1~20000内的所有素数，按每行5个打印出来
        int[] array = new int[20000];
        array[0]=2;
        int k=1;
        for(int i=3;i<=20000;i++)
        {
            for(int j=2;j<i;j++)
            {
                if(j==i-1&i%j!=0)
                {
                    array[k++]=i;
                    break;
                }
                if(i%j==0)
                    break;
            }
        }
        //按照每五个一行打印输出
        for(int i=0;i<array.length;i++)
        {
            if(array[i]!=0)
            {
                System.out.print(array[i]+" ");
                if((i+1)%5==0)
                    System.out.println();
            }
        }
        System.out.println();
    }

}